#pragma once 

#include <memory>
#include "spdlog/spdlog.h"

namespace Alice
{

/*  
    日志类，用于打印引擎日志信息
*/ 
class Log
{
public:
    Log() {}
    ~Log() {}

    static void Init();

    /* 
        获取日志对象
    */ 
    inline static std::shared_ptr<spdlog::logger>& GetLogger() { return s_logger; }

private:
    static std::shared_ptr<spdlog::logger> s_logger;
};

} // namespace Alice

/*
  打印日志宏命令
*/
#define ALICE_TRACE(...)   Alice::Log::GetLogger()->trace(__VA_ARGS__)
#define ALICE_INFO(...)    Alice::Log::GetLogger()->info(__VA_ARGS__)
#define ALICE_WARN(...)    Alice::Log::GetLogger()->warn(__VA_ARGS__)
#define ALICE_ERROR(...)   Alice::Log::GetLogger()->error(__VA_ARGS__)
